package com.xyy.saas.payment.manage.cores.dto;

import lombok.*;

import java.io.Serializable;

/**
 * 签约绑卡表(BankCardBind)实体类
 *
 * @author chujian
 * @since 2023-06-08 14:48:48
 */
@Builder
@Setter
@Getter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class BankCardBindDto implements Serializable {

    /**
     * 主键
     */
    private Long id;
    /**
     * 签约渠道(目前仅JD)
     */
    private String channel;
    /**
     * 二级商户号(区分公司)
     */
    private String merchantNo;
    /**
     * 业务线名称(区分业务)
     */
    private String businessType;
    /**
     * 请求渠道唯一流水号
     */
    private String reqNo;
    /**
     * 协议签约请求号
     */
    private String contractReqNo;
    /**
     * 签约协议号(京东侧生成)
     */
    //private String contractNo;
    /**
     * 绑卡归属账号(此银行卡归属账号)
     */
    private String bindAccount;
    /**
     * 绑卡操作用户(绑卡操作人)
     */
    private String bindUser;
    /**
     * 银行卡号
     */
    private String cardNo;
    /**
     * 卡类型
     */
    private String cardType;
    /**
     * 卡类型
     */
    private String cardTypeMsg;
    /**
     * 银行简码
     */
    private String bankCode;
    /**
     * 银行名称
     */
    private String bankName;
    /**
     * 持卡人姓名
     */
    private String idName;
    /**
     * 持卡人证件类型
     */
    private String idType;
    /**
     * 持卡人证件号
     */
    private String idNo;
    /**
     * 持卡人预留手机号
     */
    private String bankPhone;
    /**
     * 扩展字段
     */
    private String extent;
    /**
     * 签约状态 1:签约处理中  2:已绑卡  3:已解绑
     */
    private Integer contractStatus;
    /**
     * 签约状态 1:签约处理中  2:已绑卡  3:已解绑
     */
    private String contractStatusMsg;
    /**
     * 签约类型 1:一键签约 2:卡号签约
     */
    private Integer contractType;
    /**
     * 创建时间
     */
    private String createTime;
    /**
     * 修改时间
     */
    private String updateTime;

    /**
     * 是否查询记录
     */
    private String yn;

    public void trans() {
        if ("DE".equals(cardType)) {
            cardTypeMsg = "借记卡";
        } else if ("CR".equals(cardType)) {
            cardTypeMsg = "信用卡";
        }
        if (1 == contractStatus) {
            contractStatusMsg = "绑卡中";
        } else if (2 == contractStatus) {
            contractStatusMsg = "已绑卡";
        } else if (3 == contractStatus) {
            contractStatusMsg = "已解绑";
        } else if (4 == contractStatus) {
            contractStatusMsg = "绑卡失败";
        }
        if (null != bankPhone && bankPhone.length() > 7) {
            StringBuilder phone = new StringBuilder();
            phone.append(bankPhone.substring(0, 3));
            for (int i = 0; i < bankPhone.length() - 7; i++) {
                phone.append("*");
            }
            phone.append(bankPhone.substring(bankPhone.length() - 4));
            bankPhone = phone.toString();
        }
    }

}

